package com.qfjy.homework.zhaolei;

/**
 * @author:凉拌鸭头
 * @date:2022/6/2917:53
 * @version：1.0
 */
public class TemplatePatternDemo {

    /**
     * TODO 模板模式
     * 在模板模式（Template Pattern）中，一个抽象类公开定义了执行它的方法的方式/模板。它的子类可以按需要重写方法实现，但调用将以抽象类中定义的方式进行。
     * 优点：
     *     1.它封装了不变部分，扩展可变部分。它把认为是不变部分的算法封装到父类中实现，而把可变部分算法由子类继承实现，便于子类继续扩展。
     *     2.它在父类中提取了公共的部分代码，便于代码复用。
     *     3。部分方法是由子类实现的，因此子类可以通过扩展方式增加相应的功能，符合开闭原则
     * 缺点：
     *     1.每一个不同的实现都需要一个子类来实现，导致类的个数增加，使得系统更加庞大。
     *     2.由于继承关系自身的缺点，如果父类添加新的抽象方法，则所有子类都要改一遍。
     * 使用场景
     *     1.有多个子类共有的方法，且逻辑相同
     *     2.重要的复杂的方法可以使用模板模式
     * @param args
     */


    public static void main(String[] args) {
        Basketball basketball = new Basketball();
        Football football = new Football();
        basketball.play();
        football.play();
    }
}
